package myjava.date;

import java.util.Calendar;
import java.util.Scanner;

/**
 * @author Yancy
 * @program springioctest
 * @create 2020-09-07
 */
public class MonthTest {
  public static void main(String[] args) {
    //

    // 输出指定年月的月历，年月从键盘输入。每星期一行，从星期日开始，到星期六结束。
    //Calendar c = Calendar.getInstance();

    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入月：");
    int month = scanner.nextInt();

    getCalendar(month);
//    int year = c.get(Calendar.YEAR);
//    // 获取该行代码执行的时间 日历对象
//
//    c.set(year, month - 1, 1);// 修改 年月日
//
//    // 获取1日在这个周的第几天
//    int week = c.get(Calendar.DAY_OF_WEEK);
//    int max = c.getActualMaximum(Calendar.DATE);// 得到当月的总天数
//    System.out.println("这月总共有：" + max + "天");
//
//    System.out.println(year + "年" + month + "月的日历为：");
//    System.out.println("日\t一\t二\t三\t四\t五\t六");
//    // 打印1日之前的空格
//    String empty = " ";
//    for (int j = 1; j < week; j++) {
//      System.out.print(empty);
//      System.out.print("\t");
//    }
//    // 打印日历
//    int tag = week;
//    for (int i = 1; i <= max; i++) {
//      System.out.print(i);
//      System.out.print("\t");
//      // 换行
//      if (tag % 7 == 0) {
//        System.out.println();
//      }
//      tag++;
//    }

  }

  static void getCalendar(int m) {

    if(m<1&&m>12){
      System.out.println("月份输入错误！");
    }
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    calendar.set(year, m - 1, 1);
    // 求出这个月的一号是一周的第几天
    int n = calendar.get(Calendar.DAY_OF_WEEK);

    // 打印表头
    System.out.println("日\t一\t二\t三\t四\t五\t六");

    // 得到当月的总天数
    int days = calendar.getActualMaximum(Calendar.DATE);

    //打印1号前面的空格
    for (int j = 1; j < n; j++) {
      System.out.print(" " + "\t");
    }
    for (int i = 1; i <= days; i++) {

      System.out.print(i+"\t");
      if (n % 7 == 0) {
        System.out.println();
      }
      n++;

    }

  }
}
